﻿/*****************************************************************
* Project: HFW Framework
*****************************************************************
* Developer: Hdhoan
* Date created: 11/2010
* Modified:
******************************************************************/
using System;
using System.Globalization;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms;
using Janus.Windows.GridEX;
using Microsoft.Practices.EnterpriseLibrary.Validation;


namespace  HFW.Share
{
    public partial class BaseForm : Form
    {

        #region Properties


        private string _strFunctionKey;
        public virtual string FunctionKey
        {
            get { return _strFunctionKey; }
            set { _strFunctionKey = value; }
        }

        #endregion


        public BaseForm()
        {
            InitializeComponent();
        }

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
        }   

        /// <summary>
        /// Hàm được gọi để thực hiện việc click nút save trên toolbar hệ thống
        /// </summary>
        public virtual void fncSave()
        {

        }

        /// <summary>
        /// Hàm được gọi để thực hiện việc click nút NEW trên toolbar hệ thống
        /// </summary>
        public virtual void fncAdd()
        {
            //TODO: Các lệnh tổng quát được xử lý khi bấm nút Add
        }

        /// <summary>
        /// Hàm được gọi để thực hiện việc click nút EDIT trên toolbar hệ thống
        /// </summary>
        public virtual void fncEdit()
        {
            //TODO: Các lệnh tổng quát được xử lý khi bấm nút Edit
        }

        /// <summary>
        /// Hàm được gọi để thực hiện việc click nút PRINT PREVIEW / Xem In trên toolbar hệ thống
        /// </summary>
        public virtual void fncPrint()
        {
            //TODO: Các lệnh tổng quát được xử lý khi bấm nút Print Preview           
            //this.PreviewVoucher(this);
        }


        /// <summary>
        /// Hàm được gọi để thực hiện việc click nút DELETE trên toolbar hệ thống
        /// </summary>
        public virtual void fncDelete()
        {
            //TODO: Các lệnh tổng quát được xử lý khi bấm nút Delete
        }

        /// <summary>
        /// Hàm được gọi để thực hiện việc click nút FIND trên toolbar hệ thống
        /// </summary>
        public virtual void fncFind()
        {
            //TODO: Các lệnh tổng quát được xử lý khi bấm nút Find
        }

        /// <summary>
        /// Hàm được gọi để thực hiện việc click nút REFRESH trên toolbar hệ thống
        /// </summary>
        public virtual void fncRefresh()
        {
            //TODO: Các lệnh tổng quát được xử lý khi bấm nút Refresh
        }

        /// <summary>
        /// Show a member form (e.g: report)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void ShowMemberForm(object sender, BaseForm e)
        {
            Janus.Windows.GridEX.EditControls.MultiColumnCombo cbx = (Janus.Windows.GridEX.EditControls.MultiColumnCombo)sender;
            if (cbx.NotInList)
            {
                cbx.DroppedDown = true;
                cbx.Focus();
            }
        }


        /// <summary>
        /// Hàm này để xử lý khi một Combo lost focus mà Value không thuộc List đó thì Combo tự động DropDown xuống cho chọn lại value
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void ComboLeaveEvent(object sender, EventArgs e)
        {
            Janus.Windows.GridEX.EditControls.MultiColumnCombo cbx = (Janus.Windows.GridEX.EditControls.MultiColumnCombo)sender;
            if (cbx.ReadOnly == false && cbx.NotInList)
            {
                cbx.DroppedDown = true;
                cbx.Focus();
            }
        }

        /// <summary>
        /// Hàm này để xử lý khi một Combo trong Grid lost focus mà Value không thuộc List đó thì Combo tự động DropDown xuống cho chọn lại value
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void GridComboLeaveEvent(object sender, Janus.Windows.GridEX.NotInListEventArgs e)
        {
            Janus.Windows.GridEX.GridEX grid = (Janus.Windows.GridEX.GridEX)sender;
            grid.CurrentCellDroppedDown = true;
        }

        /// <summary>
        /// Copy/paste data from clipboard to GridEX, allow insert data in AddNewRow
        /// </summary>
        /// <param name="sender">GridEX</param>
        /// <param name="e">KeyEvent</param>
        /// 
        public void GridKeyDown(object sender, KeyEventArgs e)
        {
            Janus.Windows.GridEX.GridEX grid = sender as Janus.Windows.GridEX.GridEX;


            if (e.KeyCode == Keys.Down)
            {
                if (grid.CurrentColumn != null)
                {
                    if ((grid.CurrentColumn.EditType == EditType.MultiColumnCombo)
                        || (grid.CurrentColumn.EditType == EditType.MultiColumnDropDown)
                        || (grid.CurrentColumn.EditType == EditType.Combo))
                    {
                        grid.CurrentCellDroppedDown = true;
                        e.Handled = true;
                    }
                }
            }
        }

    }
}
